import React, { useState, useImperativeHandle } from "react";
// 转发ref  通常用来获取 组件实例对象
import { forwardRef } from 'react'
// 通过forwardRef 把ref对象给子组件 接收之后 把子组件实例挂载
function Child(props, ref) {
    console.log(ref);
    // 定义状态 
    let [num, setNum] = useState(0)
    let [msg, setMsg] = useState('好好学习')
    // 初始化方法 
    let init = () => {
        setNum(num + 1)
    }
    // useImperativeHandle 告诉子组件 要暴露哪些属性  将暴露的属性（num,init）挂载到05父组件console.log(ChildRef.current);里面了
    // 指定子组件暴露给ref指定属性 参数一 ref对象 参数二 回调函数 必须要有返回值 返回值必须是对象 可以要将要供父组件使用的状态返回
    useImperativeHandle(ref, () => {
        return {
            // 返回值要是个对象
            num: num,
            init
        }
    })
    return (
        <div>child-----{num}</div>

    )
}



export default forwardRef(Child) // 使用hooks  forwardRef转发一下